/*
	File: ITimeLine.h
	Desc: TimeLine interface
*/

#pragma once

#include <string>
#include "ITask.h"

class ITimeLine
{
public:
    ITimeLine(){}
    virtual ~ITimeLine(){}

public:
	// Attributes
	virtual void        setName(std::string name) = 0;
	virtual std::string getName() const           = 0;

	// Chain list
	virtual ITimeLine*  find(std::string name)    = 0;
    virtual ITimeLine*  find(int index)           = 0;
	virtual int         add(ITimeLine* newTL)     = 0;
	virtual int         remove(ITimeLine* tl)     = 0;
	virtual void        setNext(ITimeLine* plan)  = 0;
	virtual void        setPre(ITimeLine* plan)   = 0;
	virtual ITimeLine*  getNext() const 		  = 0;
	virtual ITimeLine*  getPre() const	    	  = 0;
    
    
	virtual int         addTask(ITask* newTask)   = 0;
	virtual int         removeTask(ITask* task)   = 0;
	virtual ITask*      getTask() const           = 0;//return head

	virtual bool        operator==(ITimeLine& t)  = 0;
};
